#include "usart_485.h"
#include "ProxyUnit_modbus.h"
#include "usart_645.h"
#include "ProxyUnit_DL645.h"
#include "los_task.h"
#include "cmsis_os2.h"
#include <stdio.h>
#include "LocalCom2.h"
#include "Comm.h"
#include "at32f403a_407_board.h"
#include "usart_485.h"
#include "DevRecode.h"


#define LocalCom2_STACK_SIZE 0x2000
#define LocalCom2__TASK_NAME "LocalCom2_Service"
#define LocalCom2_PRIORITY 25
#define LocalCom2_RXBUF_SIZE 1030
#define LocalCom2_TXBUF_SIZE 1030


COMM_CTRL_TYPE LocalCom2_Com;
uint8_t LocalCom2_RX_buffer[USART6_RX_BUF_SIZE];
uint8_t LocalCom2_TX_buffer[USART6_TX_BUF_SIZE];


void* LocalCom2_TaskMain(void* arg)
{
    u16 rtn;
    LocalCom2_Com.pRxBuf=LocalCom2_RX_buffer;
    LocalCom2_Com.pTxBuf=LocalCom2_TX_buffer;
    LocalCom2_Com.MaxRxLen = LocalCom2_RXBUF_SIZE;
    LocalCom2_Com.MaxTxLen = LocalCom2_TXBUF_SIZE;
    usart6_init(9600);      // 初始化modbus串口

    while(1)
    {
    LocalCom2_Com.RxedLen=get_usart6_handler(LocalCom2_Com.pRxBuf);
    if(LocalCom2_Com.RxedLen!=0)
    {
        if (ProModbusInver_UnpackFrm(&LocalCom2_Com))
           {
                LocalCom2_Com.RxedLen=0;
           }  
        }
        LOS_TaskDelay(200); 
    }
   
}



void LocalCom2_Service()
{
    UINT32 ret;
    UINT32 taskID1;
    TSK_INIT_PARAM_S stTask = {0};

    printf("LocalCom2 Service starting...\n");
    stTask.pfnTaskEntry = (TSK_ENTRY_FUNC)LocalCom2_TaskMain;
    stTask.uwStackSize = LocalCom2_STACK_SIZE;
    stTask.pcName = "LocalCom2_Task";
    stTask.usTaskPrio = LocalCom2_PRIORITY;
    ret = LOS_TaskCreate(&taskID1, &stTask);
    if (ret != LOS_OK) {
        printf("LocalCom2service failed\n");
    }
}


SYS_RUN(LocalCom2_Service);
